﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using bolsatrabajo.Negocio;
using bolsatrabajo.Dominio.NHIBERNATE;
using System.Web.SessionState;

namespace bolsatrabajo.Controllers
{
    public class OfertanteController : Controller
    {
        ServOfertante ServOfertante { get; set; }

        public ActionResult Index()
        {
            ICollection<Ofertante> Model = ServOfertante.ListarOfertantes();
            return View(Model);
        }
        public ActionResult PruebaPPP()
        {
            ICollection<Ofertante> Model = ServOfertante.ListarOfertantes();
            return View(Model);
        }
        public ActionResult Details(String Correo)
        {
            Ofertante Model = ServOfertante.ObtenerOfertante(Correo);
            return View(Model);
        }
        public ActionResult Create()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Create(FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {


                    Ofertante nuevoOfertante = new Ofertante();
                    nuevoOfertante.Ruc = (String)collection["Ruc"];
                    nuevoOfertante.RazonSocial = (String)collection["RazonSocial"];
                    nuevoOfertante.Rubro = (String)collection["Rubro"];
                    nuevoOfertante.Ubicacion = (String)collection["Ubicacion"];
                    nuevoOfertante.Contacto = (String)collection["Contacto"];
                    nuevoOfertante.Correo = (String)collection["Correo"];
                    nuevoOfertante.Contrasena = (String)collection["Contrasena"];
                    ServOfertante.CrearOfertante(nuevoOfertante);
                    return RedirectToAction("Acceso","Ofertante");
                }
                return View();
            }
            catch (Exception e)
            {
                ModelState.AddModelError(String.Empty, "Error interno al intentar crear el postulante");
                return View();
            }
        }

        public ActionResult Edit(String Correo)
        {
            Ofertante Model = ServOfertante.ObtenerOfertante(Correo);
            return View(Model);
        }

        [HttpPost]
        public ActionResult Edit(String Correo, FormCollection collection)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Ofertante OfertanteAModificar = ServOfertante.ObtenerOfertante(Correo);
                    OfertanteAModificar.Ruc = (String)collection["Ruc"];
                    OfertanteAModificar.RazonSocial = (String)collection["RazonSocial"];
                    OfertanteAModificar.Rubro = (String)collection["Rubro"];
                    OfertanteAModificar.Ubicacion = (String)collection["Ubicacion"];
                    OfertanteAModificar.Contacto = (String)collection["Contacto"];
                    OfertanteAModificar.Correo = (String)collection["Correo"];
                    OfertanteAModificar.Contrasena = (String)collection["Contrasena"];
                    ServOfertante.ModificarOfertante(OfertanteAModificar);
                    return RedirectToAction("Index","Aviso");
                }
                return View();
            }
            catch
            {
                return View();
            }
        }

        public ActionResult Delete(String Correo)
        {
            Ofertante Model = ServOfertante.ObtenerOfertante(Correo);
            return View(Model);
        }

        //
        // POST: /Tutor/Delete/pcsihsai
        [HttpPost]
        public ActionResult Delete(String Correo, FormCollection collection)
        {
            try
            {
                Ofertante ofertanteAEliminar = ServOfertante.ObtenerOfertante(Correo);
                ServOfertante.EliminarOfertante(ofertanteAEliminar);
                return RedirectToAction("Index");
            }
            catch
            {
                return View();
            }
        }

        public ActionResult Acceso()
        {
            return View();
        }

        [HttpPost]
        public ActionResult Acceso(String correo, String contrasena)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    Ofertante Model = ServOfertante.ValidarCorreoyContrasena(correo, contrasena);
                    if (Model == null)
                    {
                        return RedirectToAction("Acceso");
                    }
                    else
                    {
                        Session["logincorreo"] = correo;
                        return RedirectToAction("Index","Aviso");
                    }
                }
                return View();
            }
            catch (Exception)
            {
                ModelState.AddModelError(String.Empty, "Error interno al intentar crear el Ofertante");
                return View();
            }
        }

    }
}
